package com.lap.generator.commons.enums;

import lombok.Getter;

/**
 * 验证框架类型
 *
 * @author Shuisheng Lao(劳水生)
 * @version 0.0.1
 */
@Getter
public enum AnnotationType {
  /** 通用SWAGGER属性注解 */
  SCHEMA("@Schema(description = \"%s\", type = \"%s\", example = \"%s\")"),

  /** 一般字符串,不为null,trim()!="" */
  NOT_BLANK("@NotBlank(message = \"{%s}\")"),

  /** 所有类型,不为null */
  NOT_NULL("@NotNull(message = \"{%s}\")"),

  /** 长度,字符串长度不超过 */
  LENGTH("@Length(max = %s, message = \"{%s}\")"),

  /** 元素必须是一个数字，其值必须大于等于指定的最小值 */
  NUMBER_MIN("@Min(value = %s, message = \"{%s}\")"),

  /** 元素必须是一个数字，其值必须小于等于指定的最大值 */
  NUMBER_MAX("@Max(value = %s, message = \"{%s}\")"),

  /** 元素区间值 */
  NUMBER_RANGE("@Range(min = %s, max = %s, message = \"{%s}\")"),
  ;

  private final String value;

  AnnotationType(String value) {
    this.value = value;
  }

  public static String getAnnotation(AnnotationType type, Object... objs) {
    return String.format(type.value, objs);
  }
}
